#ifndef WIKI_MANAGER_WIDGET_H
#define WIKI_MANAGER_WIDGET_H

#include <QWidget>
#include <QMenu>
#include <QTreeWidgetItem>

namespace Ui {
class WikiManagerWidget;
}

class WikiManagerWidget : public QWidget
{
    Q_OBJECT

public:
    explicit WikiManagerWidget(QWidget *parent = nullptr);
    ~WikiManagerWidget();

private:
    void initUi();
    void initEvents();
    void initWikiInfo();
    void initMenu();

private slots:
    /**
     * 添加Wiki按钮按下槽函数
     */
    void onAddWikiBtnClicked();
    /**
     * wiki树当前节点改变槽函数
     */
    void onCurrentWikiChanged(QTreeWidgetItem *currentItem, QTreeWidgetItem *previousItem);
    /**
     * wiki节点鼠标按下槽函数
     */
    void onWikiIsPressed(QTreeWidgetItem *item, int column);
    /**
     * wiki节点名称改变槽函数
     */
    void onWikiNameChanged(QTreeWidgetItem *item, int column);
    /**
     * 保存文档按钮单击槽函数
     */
    void onSaveWikiBtnClicked();
    void onDeleteWikiTriggered();
    void onDeleteChildWikiTriggered();
    /**
     * wiki树节点移动槽函数
     */
    void onWikiItemIsMoved(QTreeWidgetItem *item);
    /**
     * 重命名Wiki
     */
    void renameWiki();
private:
    /**
     * 添加Wiki交互逻辑
     */
    void addWiki(QTreeWidgetItem* parentItem=nullptr);

    /**
     * 删除Wiki交互逻辑
     */
    void deleteWiki(QTreeWidgetItem* item);

private:
    Ui::WikiManagerWidget *ui;
    QMenu                 *m_wikiTreeWidgetItemMenu;
    QTreeWidgetItem       *m_currentMenuAtItem;
    QString                m_currentWikiUuid;
};

#endif // WIKI_MANAGER_WIDGET_H
